export default {
  data() {
    return {
      pendingAction: [] // 存储需要登录后执行的方法
    }
  },
  onShow() {
    // 执行未处理的方法
    this.pendingAction.forEach((fn) => fn())
    this.pendingAction = []
  },
  methods: {
    // 存储需要登录后执行的方法
    pushPendingAction(action) {
      if (typeof action === 'function') {
        this.pendingAction.push(action)
      }
    },
    // 如果需要弹出登录确认框，说明就是没登录，没登录是干不了下单操作的
    // return true 就是弹出了登录确认框，return false 就是没弹出登录确认框
    loginConfirm(pendingAction) {
      // 如果没有token就提示登录
      if (!this.$store.getters.token) {

        uni.showModal({
          title: '温馨提示',
          content: '此时需要先登录才能继续操作哦',
          confirmText: '去登录',
          cancelText: '再逛逛',
          success: (res) => { // 改为箭头函数绑定this
            // 这个也有个坑，用户点击取消还是确认都会触发 success，只有模态框调用失败才会触发 fail
            if (res.confirm) {
              // 存储需要登录后执行的方法
              this.pushPendingAction(pendingAction)

              // 在登录页的逻辑是如果没有携带 toUrl，默认返回上一页
              uni.navigateTo({ // 编码
                url: '/pages/Login/Login',
              })
            }
          }
        })

        return true // 没有token要return true，代表要弹出登录确认框
      } else return false
    }
  }
}
